# 线性脚本
import pymysql
from faker import Faker
faker = Faker(locale='zh_cn')
"""
连接数据库的三方库：pymysql
用navicat连接数据库：
账号
密码
端口号
ip地址

连接之前，确保数据库是能够远程访问的（用navicat测试一下，能连接上，就说明是没问题）
"""
# 创建数据库对象
db = pymysql.connect(user='root',password='123456',host='8.148.229.201',database='jiac',cursorclass =
pymysql.cursors.DictCursor)
"""
user：账号
password：密码
host：ip地址
database: 要连接哪一个数据库
cursorclass：返回内容设置成字典
"""
# 创建游标对象：游标就相当于执行sql后的回车一样，用游标提交sql
cursor = db.cursor()

# 查询数据库，符合查询条件的全部内容
"""
cursor.execute('select * from student where age=22')        # 使用游标执行sql语句
result = cursor.fetchall()                              # 查询符合sql语句的全部内容
print(result)                       # result是查询后的结果
"""

# 查询数据库，符合查询条件的一条内容
"""
cursor.execute('select * from student where age=22')
result = cursor.fetchone()
print(result)
"""

# 增加数据
"""
cursor.execute(f'insert into student(name,address) values("{faker.name()}","{faker.address()}")')
db.commit()     # 涉及到对数据库真实改变的：增、删、改，都需要用到数据库提交才可以

# 再次查询，看是否新增成功

cursor.execute('select * from student')
r = cursor.fetchall()
print(r)
"""

# 修改数据
"""
cursor.execute('update student set name="张三丰" where name="李四"')
db.commit()     # 对数据库有改动了，用数据库对象提交

# 再次查看内容
cursor.execute('select * from student')
result = cursor.fetchall()
print(result)
"""

# 删除数据
cursor.execute("delete from student where name='张三丰'")
db.commit()

# 再次查看数据内容
cursor.execute('select * from student')
result = cursor.fetchall()
print(result)

# 关闭数据库
cursor.close()          # 先关闭游标
db.close()              # 再关闭数据库

# 使用with
"""
with pymysql.connect(user='root',password='123456',host='8.148.229.201',database='jiac',cursorclass =
pymysql.cursors.DictCursor) as db:
    # 创建游标对象：游标就相当于执行sql后的回车一样，用游标提交sql
    cursor = db.cursor()

    # 查询数据库内容
    cursor.execute('select * from student where age=22')  # 使用游标执行sql语句
    result = cursor.fetchall()  # 查询符合sql语句的全部内容
    print(result)  # result是查询后的结果
"""




